<?php
/**
 * Clase HelperUsers
 *
 * Esta clase nos permitira manejar acciones comunes con MN_Usuarios...
 * @package Multinivel
 */
class Helper_Users
{
    const ERROR_DELETED = 1;
    const ERROR_BLOCKED = 2;
    /**
     * Autentifica y valida a un usuario con el nombre de usuario
     * @param string $user el username
     * @param string $pass opcional, el password (en md5 o no), si no va se logguea solo con que exista el usuario
     * @param bool $md5 por default false indica si el password se pasa como md5 o no
     * @return int|bool true cuando es exitoso, false en error o int con el código de error
     *          1: usuario eliminado
     *          2: usuario desactivado
     */
    public function validateUser($user, $pass = null, $md5 = false)
    {
        $result = false;
        $usersAdapter = MN_UsuariosTable::getInstance();
        $auth = new Model3_Auth();

        $username = $user;
        if(!strstr($username, '@'))
        {
            $username .= Class_Server::getEmailDomain();
        }
        $passClear = $pass;
        if(is_null($pass) == false)
        {
            if($md5 == false)
            {
                $password = md5($pass);
            }
            else
            {
                $password = strtolower($pass);
            }
        }
        else
        {
            $password = $usersAdapter->getPasswordFromUser($username);
        }

        $result = $auth->authenticate($username, $password);
        if($result == true)
        {
            $credentials = Model3_Auth::getCredentials();
            if($credentials['status'] != MN_Usuarios::STATUS_NORMAL)
            {
                Model3_Auth::deleteCredentials();
                if($credentials['status'] == MN_Usuarios::STATUS_ELIMINADO)
                {
                    $result = self::ERROR_DELETED;
                }
                elseif($credentials['status'] == MN_Usuarios::STATUS_DESACTIVADO)
                {
                    $result = self::ERROR_BLOCKED;
                }
            }
            else
            {
                switch($credentials['tipoUsuario'])
                {
                    case MN_Usuarios::TYPE_ADMIN_ADMIN:
                        $mainPage = 'IndexAdmin';
                        break;
                    case MN_Usuarios::TYPE_OWNER:
                        $mainPage = 'Portada';
                        break;
                    default:
                        $mainPage = 'Portada';
                        break;
                }
                

                $paginaInicio =  new Model3_Session_Namespace('paginaInicial');
                $paginaInicio->paginaInicial = $mainPage;
            }
        }
        return $result;
    }

    /**
     * checara los MN_Usuarios permitidos para entrar a solicituddes de compra y
     * reportes de solicitud de compra
     */
    public function isUserPermitido()
    {
        $resp = false;
        $credentials = Model3_Auth::getCredentials();
        if($credentials['tipoUsuario'] == MN_Usuarios::TYPE_VALID_MANAGER ||
            $credentials['tipoUsuario'] == MN_Usuarios::TYPE_VALID_SUPERVISOR ||
            $credentials['tipoUsuario'] == MN_Usuarios::TYPE_VALID_VALIDATOR)
        {
            $resp = true;
        }
        return $resp;
    }

    /**
     * Regresa el nombre del tipo de usuario
     * @param int $typeId
     * @return string
     */
    public function getNameUser($typeId)
    {
        $name = MN_Usuarios::nombreTipoUser($typeId);
        return $name;
    }
}